package wzmSteuerung;

import gnu.io.SerialPort;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;

public class Senden implements Runnable{

	/**
	 * Senden der Daten an die Maschine
	 */
	
	boolean portGeoeffnet;
	ArrayList<String> befehlskette = new ArrayList<String>();
	int i = 0;
	OutputStream outputStream;
	SerialPort serialPort;
	boolean error = false;
	Maschine maschine;

	public Senden( Maschine m )
	{
		this.befehlskette = m.befehlskette;
		this.serialPort = m.serialPort;
		this.portGeoeffnet = m.serialPortGeoeffnet;
		this.maschine = m;
		
		try {
			outputStream = serialPort.getOutputStream();
		} catch (IOException e) {
			System.out.println("Keinen Zugriff auf OutputStream");
		}	
	}
	
	public void run()
	{
		System.out.println("Senden Run-Methode");
		
			while (this.befehlskette.size() > i ) 
			{
				if (error == false)
				{
					this.sendeSerialPort(befehlskette.get(i));
					try {
						Thread.sleep(1000);
					} catch(InterruptedException e) { }
					i ++;
				}
			}	
	}
	
	void sendeSerialPort(String nachricht)
	{
		System.out.println("Sende: " + nachricht);
		if (this.portGeoeffnet != true)
			return;
		try {
			this.outputStream.write(nachricht.getBytes());
		} catch (IOException e) {
			 maschine.errortext = "Fehler beim Senden: " + e.getMessage();
			this.error = true;
		}
	}
	
}
